tar 命令详解

tar 是 Linux/Unix 系统中用于文件打包和压缩的常用工具,支持将多个文件或目录打包成一个文件(称为 “tar 包”),并可结合压缩算法(如 gzip、bzip2、xz 等)减小文件体积。以下是其核心用法和选项的详细说明。

一、基本语法

tar [选项] [目标文件名] [文件或目录列表]

二、常用选项分类

1. 核心功能选项

选项 描述
-c 创建一个新的 tar 包(create)。
-x 解压一个已存在的 tar 包(extract)。
-t 查看 tar 包中的文件列表(list)。
-f 指定文件名file),该选项必须紧跟文件名,且通常位于选项列表末尾。
-v 显示详细信息verbose),如打包 / 解压过程中输出处理的文件名。
-p 保留文件的权限属性(如所有者、权限位等)。
-P 保留文件的绝对路径(默认会去除开头的 /,使用相对路径)。

2. 压缩格式选项

tar 本身不压缩数据,需结合以下选项调用外部压缩工具:

选项 压缩格式 对应扩展名 说明
-z gzip .tar.gz 调用 gzip 压缩(速度快,压缩比中等)。
-j bzip2 .tar.bz2 调用 bzip2 压缩(压缩比高,速度较慢)。
-J xz .tar.xz 调用 xz 压缩(压缩比最高,速度最慢)。
无压缩 仅打包不压缩 .tar 直接生成未压缩的 tar 包。

3. 路径与目录选项

选项 描述
-C <目录> 指定解压目录change directory),解压时切换到目标目录。
--exclude <模式> 排除指定文件或目录(支持通配符,如 --exclude="*.log")。
--strip-components <N> 解压时去除前 N 级目录结构(如 --strip-components=1 表示去掉第一层目录)。

三、经典操作示例

1. 创建压缩包

  • 无压缩打包(仅合并文件):

    tar -cvf 备份.tar 文件夹1 文件夹2  file1.txt  # 创建名为“备份.tar”的包
    
    • -c:创建包;-v:显示详细信息;-f:指定包名。
  • 使用 gzip 压缩(生成 .tar.gz):

    tar -zcvf 备份.tar.gz 目标目录/
    
  • 使用 bzip2 压缩(生成 .tar.bz2):

    tar -jcvf 备份.tar.bz2 目标文件.txt
    
  • 使用 xz 压缩(生成 .tar.xz):

    tar -Jcvf 备份.tar.xz 大型文件.iso
    

2. 解压压缩包

  • 解压到当前目录(自动识别压缩格式):

    tar -xvf 备份.tar       # 未压缩的 tar 包
    tar -xzvf 备份.tar.gz   # gzip 压缩包
    tar -xjvf 备份.tar.bz2  # bzip2 压缩包
    tar -xJvf 备份.tar.xz   # xz 压缩包
    
  • 解压到指定目录

    tar -xzvf 备份.tar.gz -C /目标目录/
    

3. 查看包内文件列表

tar -tvf 备份.tar.gz  # 显示压缩包内的文件和目录结构

4. 向已有包中添加文件

tar -rvf 备份.tar 新文件.txt  # 向未压缩的 tar 包中追加文件(仅适用于未压缩的 .tar)

5. 排除特定文件或目录

tar -zcvf 备份.tar.gz --exclude="*.log" --exclude="临时文件/" 目标目录/

6. 保留权限并解压

tar -xvpvf 备份.tar  # 解压时保留文件权限属性

7. 去除目录层级

若包内文件路径为 目标目录/子目录/文件.txt,解压时去掉第一层目录 目标目录

tar -xzvf 备份.tar.gz --strip-components=1

四、注意事项

  1. 选项顺序-f 必须紧跟文件名,且通常位于选项列表末尾(如 -cvf 而非 -fcv)。
  2. 压缩格式兼容性:解压时无需指定压缩格式选项(-z/-j/-J),tar 会自动识别扩展名。
  3. 绝对路径风险:打包时若包含绝对路径(如 /etc/),解压可能会覆盖系统文件,建议使用相对路径。
  4. 备份场景:定期备份时可结合 --exclude 排除临时文件,并用 -p 保留权限。
  5. 压缩比与速度:xz(-J)压缩比最高但速度最慢,gzip(-z)平衡速度与压缩比,适合日常使用。

五、总结

tar 是文件管理和备份的核心工具,通过组合不同选项可灵活处理打包、压缩、解压等需求。掌握 -c(创建)、-x(解压)、-t(查看)、-f(指定文件名)和压缩选项(-z/-j/-J),即可应对大部分场景。进阶用法如权限保留、目录层级处理等可根据实际需求灵活运用。

Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-03-31 16:28:25

results matching ""

    No results matching ""